CodeIgniter দিয়ে একটি Login এবং Registration System তৈরি করা একটি সাধারণ এবং কার্যকরী প্রক্রিয়া। এই সিস্টেমটি ব্যবহারকারীকে সাইন আপ এবং লগ ইন করার সুযোগ দেয়। সাধারণভাবে, এটি ব্যবহারকারীর তথ্য ডাটাবেসে সংরক্ষণ করে এবং লগইন করার সময় সেগুলির যাচাই করে।
পদক্ষেপ ১: ডাটাবেস তৈরি এবং কনফিগারেশন
প্রথমে একটি MySQL ডাটাবেস তৈরি করুন এবং একটি users টেবিল তৈরি করুন যেখানে ব্যবহারকারীর তথ্য সংরক্ষিত হবে।
ডাটাবেস টেবিল
CREATE DATABASE user_management;
USE user_management;
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
পদক্ষেপ ২: CodeIgniter কনফিগারেশন
২.১: ডাটাবেস কনফিগারেশন
application/config/database.php ফাইলে ডাটাবেস কনফিগারেশন যোগ করুন:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'user_management',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
২.২: URL কনফিগারেশন
application/config/config.php ফাইলে বেস URL সেট করুন:
$config['base_url'] = 'http://localhost/your_project_name/';
পদক্ষেপ ৩: Controller তৈরি
এখানে আমরা দুটি Controller তৈরি করবো: একটি RegistrationController এবং একটি LoginController।
৩.১: RegistrationController তৈরি
application/controllers/RegistrationController.php ফাইলে নিচের কোডটি যোগ করুন:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class RegistrationController extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('UserModel'); // মডেল লোড
}
// রেজিস্ট্রেশন ফর্ম
public function index() {
$this->load->view('registration_form');
}
// রেজিস্ট্রেশন ডাটা ইনসার্ট করা
public function register() {
$username = $this->input->post('username');
$email = $this->input->post('email');
$password = password_hash($this->input->post('password'), PASSWORD_DEFAULT); // পাসওয়ার্ড হ্যাশ করা
$data = array(
'username' => $username,
'email' => $email,
'password' => $password
);
$this->UserModel->insert_user($data);
redirect('logincontroller'); // লগিন পেজে রিডিরেক্ট
}
}
৩.২: LoginController তৈরি
application/controllers/LoginController.php ফাইলে নিচের কোডটি যোগ করুন:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class LoginController extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('UserModel');
}
// লগিন ফর্ম
public function index() {
$this->load->view('login_form');
}
// লগিন যাচাই
public function login() {
$email = $this->input->post('email');
$password = $this->input->post('password');
$user = $this->UserModel->get_user_by_email($email);
if ($user && password_verify($password, $user['password'])) {
// সেশন তৈরি
$this->session->set_userdata('user_id', $user['id']);
redirect('dashboard');
} else {
$this->session->set_flashdata('error', 'Invalid email or password');
redirect('logincontroller');
}
}
}
পদক্ষেপ ৪: Model তৈরি
৪.১: UserModel তৈরি
application/models/UserModel.php ফাইলে নিচের কোডটি যোগ করুন:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class UserModel extends CI_Model {
// ব্যবহারকারী ইনসার্ট করা
public function insert_user($data) {
return $this->db->insert('users', $data);
}
// ইমেইল দিয়ে ব্যবহারকারী বের করা
public function get_user_by_email($email) {
$this->db->where('email', $email);
$query = $this->db->get('users');
return $query->row_array();
}
}
পদক্ষেপ ৫: Views তৈরি
৫.১: Registration Form (registration_form.php)
application/views/registration_form.php ফাইলে নিচের কোডটি যোগ করুন:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registration</title>
</head>
<body>
<h2>Register</h2>
<?php echo form_open('registrationcontroller/register'); ?>
<label for="username">Username:</label>
<input type="text" name="username" required><br><br>
<label for="email">Email:</label>
<input type="email" name="email" required><br><br>
<label for="password">Password:</label>
<input type="password" name="password" required><br><br>
<input type="submit" value="Register">
</form>
</body>
</html>
৫.২: Login Form (login_form.php)
application/views/login_form.php ফাইলে নিচের কোডটি যোগ করুন:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h2>Login</h2>
<?php echo form_open('logincontroller/login'); ?>
<label for="email">Email:</label>
<input type="email" name="email" required><br><br>
<label for="password">Password:</label>
<input type="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
<?php if ($this->session->flashdata('error')): ?>
<p style="color: red;"><?php echo $this->session->flashdata('error'); ?></p>
<?php endif; ?>
</body>
</html>
পদক্ষেপ ৬: Routes কনফিগারেশন
application/config/routes.php ফাইলে routes কনফিগার করুন:
$route['default_controller'] = 'logincontroller';
$route['logincontroller'] = 'logincontroller';
$route['registrationcontroller'] = 'registrationcontroller';
$route['dashboard'] = 'dashboardcontroller'; // একটি ড্যাশবোর্ড কন্ট্রোলার তৈরি করতে হবে
পদক্ষেপ ৭: সেশন কনফিগারেশন
application/config/config.php ফাইলে সেশন কনফিগারেশন যোগ করুন:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200; // 2 hours
$config['sess_save_path'] = NULL; // default to temp directory
উপসংহার
এই উদাহরণটি CodeIgniter-এ Login এবং Registration সিস্টেম তৈরি করার জন্য একটি সাধারণ গাইড। আপনি এটি কাস্টমাইজ করতে পারেন যেমন ইমেইল যাচাই বা password reset ফিচার যোগ করা। এই সিস্টেমটি সুরক্ষিত এবং কার্যকরী পদ্ধতিতে ব্যবহারকারী তথ্য পরিচালনা করতে সাহায্য করবে।
Read more